home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ham Radio
/
Ham Radio CD-ROM (Emerald Software) (1995).ISO
/
cw
/
morse-it
/
morse-it.doc
< prev
next >
Wrap
Text File
|
1989-06-19
|
13KB
|
354 lines
S.Maria Versa (PV) - ITALY 06-12-89
Dear Morse-it downloader,
the file you have just downloaded contains a
routine that is an effective help for those who want to practice
decoding Morse.
Morse-it was designed in a stormy night by a radio-amateur (IW2CNM) to
serve as a "quick & dirty" Morse tutor for all the people that have to
learn this code.
Please, note that in the following text, I use the terms "transmitter"
and "receiver" not properly, because the routine is not able to drive a
"on the air" keyer and it can't receive anything if you do not supply
some additional hardware...
The routine is intended to be used only as a Morse tutor, it can
decode morse characters keyed in via the game port, and it can help you
learning Morse outputting characters coded via the internal speaker of
your P.C..
Morse-it is logically subdivided in two major parts :
TRANSMITTER section and RECEIVER section, let's first see the...
-- Transmitter section --
The routine ("program" is a too big word to designate the work...) is
in effect an automatic oscillator that "transmits" random Morse-coded
strings (5 characters long) allowing the user to select proper speed
and a "friendly" tone.
Selecting faster speeds from time to time, you will be able to decode
Morse at very high rates after a short training period, and you'll be
able to pass all tests to become a radio-amateur.
Morse-it is rated for italian amateurs, so all the defaults are "tuned"
on italian CW tests, but the routine is written in Basic and you can
fastly modify it if you don't like a part or the whole code.
As is, Morse-it transmits a sequence of 23 lines of 13 strings of 5
characters long random strings before pausing to let the user check
what he has received.
After the entire sequence has been transmitted, the user can press
<ENTER> key to continue the transmission of another sequence, or press
<ESC> key to stop and return to operating system.
Before starting the sequence, the user is prompted to choose the
following options :
- input mode (keyboard directed, random or from a file): this option
allows the user to select transmission of random characters, user
strings, or a user file.
If you select random strings transmission,(A option of the "main menu")
asks you to select the other options (tone, speed, printer output...)
and then starts "beeping" the sequence.
If you select "File input" (F option of the "m.m."), the program asks
you to key in the file name you want to transmit and then starts the
transmission of the file's content.
Selecting "Keyboard directed input" (D option) cause the program
to prompt you to insert a string (terminated with <ENTER> key) and then
the program will transmit the string at the user selected speed and
tone.
An asterisk ("*") as first character of the input string will stop the
program and returns to the operating system.
In addition you can choose the following options :
- printer output :to print the output characters (for all the modes
listed above). Selecting printer output can cause some noise
(printers are noisy...), but is very useful to check the strings
transmitted with the ones received by the user.
- speed : the transmission speed (you can specify a value from 1 to
10'000'...000 characters per minute, but the routine works properly
only between a range from 10 to 120 chars. per minute.
- tone : the user can select the oscillator tone in order to make the
decoding more friendly, as above you can specify any value between 1
and 10'000'....000 Hz, but the computer internal speaker works from 200
to 7000 Hz, higher or lower driving frequencies generate a poor
output.
Defaults for the options above are :
NO : output is directed to SCREEN
40 : the default speed unless otherwise indicated is 40 char./min.
700: the default tone is 700 Hz
As I told you before, these defaults are tuned for italian Morse test
that a future amateur must stand, but you can easily change them (Basic
is a simple and universal language I hope...).
-- Receiver section --
The receiver section is very simple but effective: it detects a ON/OFF
condition on a pin of the GAME PORT, computing the duration of each
state to detect characters and decode what you key-in via the game port.
The algorithm is very simple to improve speed, and there are some
limits :
- a character is printed on the screen only after the subsequent has been
keyed-in by the user (the last character that you key-in is echoed only
if you input another character...)
- the set of decipherable characters is small (but it is very easy to
increase it)
- this version of Morse-it can't decode groups such as "AR","KK","CQ"
- NO printer output is provided (time is always scarce when you do real
time operations)...
Keep in mind that if Morse-it can't decipher a character (due to a
user mistake...) it will print an "*" and continue decoding, this
allows you to correct "pacing" and transmitting errors during the
exercise.
--- How to connect the key to the game port ---
You have to buy a DB 15 (male or female depending on your computer Game
port input), a DB 15 is a connector with two rows of 8 and 7 pins that
are used to access various inputs on the game port (or "joystick port").
Obviously you need a digital input, so you can leave off the two
analogic ones and connect the key directly to the pin 10 and 12 of the
DB 15 (logical input and GND).
A soldering iron and two copper wires are recommended to achieve a
durable result (you can use chewing gum or glue to set-up it faster,
but it won't be the same...).
The pins of the DB 15 are numbered on the back side of the connector so
you won't have troubles to connect the key properly... DO NOT SHORT
CIRCUIT ANY of the pins on the game port, probably you can't blow-up it
even if you connect all the pins together, but anyway.....
After connecting the key you can run Morse-it: choose the Receiver
option and then start keying some Morse coded words to test the
program.
SOME IMPORTANT NOTES ON MORSE-IT
--------------------------------
If you make changes to the routine and recompile it (very important if
you plan to use the receiver section that works only if you compile
program) keep in mind that some old BASIC compilers are not smart
enough to compile MORSE-IT.
I compiled and linked Morse-it with many different compilers and I saw
that in some cases it didn't work : the most common problem is that old
BASICs do not preserve tone duration in SOUND instruction as in
BASIC interpreter, program speed increases parallel with tone "speed"
causing the output to be too fast...
I compiled Morse-it with Microsoft Quick Basic 2.0 (tm) and so I think
that newer version will work even better.
Modifying the RECEIVER SECTION
------------------------------
If you run Morse-it on a IBM AT or a computer that is faster than a
plain 4.77 MHz P.C. don't forget to change the constants in the tests
at the following lines :
1000 IF P>150 ... ... ... : increase 150 if your PC is faster and
decrease if slower than a standard P.C. (150 is the number of pause
loops that Morse-it does when a "pause between characters" has been
detected)
At the time, finding something slower than the standard P.C. is a very
hard task... It could happen if your old P.C. is running a
multitasking/multiuser environment.
If all seems OK and you experience poor transmission speed, try a speed
test (Norton SI (tm), PCtools (tm) or something like...) they'll help
you fixing the problem.
1050 IF P>30 ... ... ... : same as above... 30 is the "pause between
characters element" (dot or line) loops count.
1190 IF C<=40 ... ... ... : C represents the duration of a Morse code
"dot" (.) computed in "key down loops" so, a value of 40 or less
indicates that Morse-it detected a "dot". The constant 40 must be
increased if you see that computer detected a "line" and you keyed-in a
"dot" instead.
1200 IF C>40 ... ... ... : a line has been detected... (Increase this
value only if Morse-it seems to detect only lines and "skip" dots.)
1300 ... ... :IF P>700 ...: 700 indicates the number of loops to detect
a "pause between words", if you see that words are printed without
spaces among them you must increase 700 to the proper value.
IMPORTANT : Basic compilers are slower than the CPU speed, this
means that if you have a P.C. 6 times faster than original P.C. you
DON'T HAVE to multiply the above values by 6...
I couldn't make intensive tests, but I think that the right rate could
be 3 or at least 4, try some values from 2 to 5 and see what
happens...Good luck!!!
MODIFYING THE TRANSMITTER SECTION
---------------------------------
If you use a smart compiler that preserves the right tone duration, you
don't need to make changes to the program, you can do something if you
don't like the timing ratios during transmission.
Morse-it uses these timing ratios :
dot : 1 time unit (depending on speed)
line : 3 (line duration is 3 * dot_duration)
char.spacing : 5 (space between characters is 5 * dot_duration)
word spacing : 7 (space between different words is 7 * dot_duration)
To change these ratios modify the following lines :
460, 470, 480, 490, 750, 780
Obviously these ratios affect transmission "pacing" so change them with
care (only if you feel your P.C. "beeping" randomly instead of
transmitting...).
--- Adding characters to the set ---
Currently, Morse-it can transmit or receive 40 characters and it isn't
able to decode groups such as "AR", "CQ", "VVV" (I'm working on a newer
version of the receiver that would be able to do so...).
You can easily modify the character set changing the lines :
10 : "update" the DIM A$(40) to match your specifications
20 : change the upper limit of the loop (FOR I = 1 TO <new value>)
30 : H$ contains the entire character set so you have to update it
(appending characters AT THE END of the string) when increasing the
character set.
500, 510, 520 : these lines turn to Basic a pseudo-Morse code where :
1 - represents a "LINE" (I did not use a "-" sign because listing would
be less readable).
0 - indicates a "DOT" (see above...)
The right sequence for updating the character set is :
- append the character at the end of H$
- update the DIM A$(40) declaration
- modify the READ loop increasing upper bound
- add the proper DATA string at 500-520 recoding it in the proper
format as seen above.
ARE YOU AN AMATEUR ?
--------------------
If you answered YES to the preceding question you can "field test"
Morse-it in a real environment : build the following hardware and then
experience a working (cheap!!!!!!) Morse decoder...
You need only :
- an amplifier (an uA 741 integrated circuit plus some resistor and
capacitors can do the job)
- a 700 Hz NARROW filter : useful only with old receivers, new
ones have GOOD built-in filters...(Another uA 741 IC...)
- a wave squarer : you have to convert noisy receiver output to a sharp
digital signal of proper level (a 74LS14 IC can be used with
success...)
Assemble all these components on a small board using a soldering iron
and then connect the 741 input to the receiver's audio output and the
74LS14 output to the GAME PORT as seen for the Morse-Key.
Devoting 4 $ of your yearly income (not tax deductible!) you'll have a
working Morse decoder....
PROBLEMS, NOTES, FUTURE RELEASES
--------------------------------
If you need, contact me via E-Mail at the following addresses:
CONTINENTAL U.S. :
MOTHER'S PLACE BBS : phone (216)-447-0836 (data:2400,8,N,1)
USER : ALEX BRUCIAMONTI
ITALY: (BBS uses ITALIAN language!)
MC-LINK : phone (0039)-6-451-0211
(0039)-6-451-3182
(0039)-6-418-0440 (8 lines)
data: 300/2400,8,N,1 or 7,S,1
USER : MC6608 (ALESSANDRO BRUCIAMONTI)
As to date, these are two non profit BBSes located respectively in OHIO
(Cleveland Area) and ITALY (Rome).
Ordinary mail is welcome at the following address :
Alessandro Bruciamonti
via Roma 72
27047 S.Maria della Versa (PV)
ITALY
Please, if you leave messages on the U.S. BBS, allow me a couple of
weeks to answer : international phone calls cost lots of money and I
can read E-Mail only one or two times per month.
*********************************************************************
* ARC - ZIP PACKING LIST *
*********************************************************************
Either you downloaded MORSE-IT as a .ARC or .ZIP file, the archive must
have the following files :
MORSE-IT.BAS : BASIC source code
MORSE-IT.DOC : This doc. file
MORSE-IT.EXE : Executable file for MS-DOS (tm) operating system
(compiled with Microsoft Quick Basic rel. 2.0 (tm) and BCOM20.LIB)
73 de IW2CNM - Alessandro